home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / RTLWIN32.PAK / MSFS.H < prev    next >
C/C++ Source or Header  |  1997-05-06  |  17KB  |  397 lines

  1. #if !defined( _MSFS_H )
  2. #define _MSFS_H
  3. #pragma option -b
  4.  
  5. /*
  6.  *  M S F S . H
  7.  *
  8.  *
  9.  *  Copyright (C) Microsoft Corp. 1986-1996.  All Rights Reserved.
  10.  *
  11.  *
  12.  *  Definitions used by the the Microsoft Mail transport, address book
  13.  *  and shared folder service providers.
  14.  *
  15.  *  The following MSFS defined properties are configurable via ConfigureMsgService()
  16.  *  calls.  They are grouped by function.
  17.  *
  18.  *  C o n n e c t i o n   P r o p e r t i e s
  19.  *
  20.  *  PR_CFG_SERVER_PATH
  21.  *      --  The path to the users post office.  Mapped network drives, UNC and NETWARE paths
  22.  *          are acceptable.  NETWARE paths of the type NWServer/share:dir\dir1 are converted to 
  23.  *          UNC paths of the type \\NWServer\share\dir\dir1. 
  24.  *
  25.  *  PR_CFG_MAILBOX
  26.  *      --  The users mailbox name.  eg. in a NET/PO/USER address,
  27.  *          this is USER.  The maximum mailbox name is 10 characters.
  28.  *
  29.  *  PR_CFG_PASSWORD
  30.  *      --  The users mailbox password.  The maximum password is 8 characters.
  31.  *
  32.  *  PR_CFG_REMEMBER
  33.  *      --  A boolean value indicating whether the users password is
  34.  *          to be remembered in the profile or not.  This is useful because
  35.  *          if the password is remembered the user can bypass the logon prompt
  36.  *          if his server path, mailbox name and password are all supplied.
  37.  *
  38.  *  PR_CFG_CONN_TYPE
  39.  *      --  The connection type.  This may be one of CFG_CONN_AUTO, CFG_CONN_LAN,
  40.  *          CFG_CONN_REMOTE, CFG_CONN_OFFLINE as defined below.
  41.  *
  42.  *          CFG_CONN_AUTO       --  Automatically detect whether the connection type is LAN or REMOTE.
  43.  *                                  This connection type is only available on Win95.
  44.  *          CFG_CONN_LAN        --  LAN type connection.  Used to connect to the post office using a
  45.  *                                  UNC path or pre-existing mapped drive.
  46.  *          CFG_CONN_REMOTE     --  Dial up connection using Dial-up Networking.
  47.  *          CFG_CONN_OFFLINE    --  Not connected.
  48.  *
  49.  *  PR_CFG_SESSION_LOG
  50.  *      --  A boolean value indicating whether session logging
  51.  *          is on or off.
  52.  *
  53.  *  PR_CFG_SESSION_LOG_FILE
  54.  *      --  The path to the session log file.
  55.  *
  56.  *  D e l i v e r y   P r o p e r t i e s
  57.  *
  58.  *  PR_CFG_ENABLE_UPLOAD
  59.  *      --  A boolean value which indicates whether mail in the outbox
  60.  *          is sent.
  61.  *
  62.  *  PR_CFG_ENABLE_DOWNLOAD
  63.  *      --  A boolean value which indicates whether mail in the server
  64.  *          mailbag is downloaded.
  65.  *
  66.  *  PR_CFG_UPLOADTO
  67.  *      --  A bit array which allows the user to indicate which addresses
  68.  *          for which the transport is to attempt delivery.  This is useful
  69.  *          in order to allow a user to specify that a transport only handle
  70.  *          delivery for a subset of the addresses it can really process.
  71.  *          When multiple transports are installed and the user wants a
  72.  *          different transport to handle some specific address types they
  73.  *          can use this bit array to specify that the MSMAIL transport
  74.  *          only handle a specific set of addresses.
  75.  *
  76.  *          Possible values as defined below include:
  77.  *
  78.  *          CFG_UPLOADTO_PCMAIL     --  Local Post Office and External Post Office address types
  79.  *          CFG_UPLOADTO_PROFS      --  PROFS address types
  80.  *          CFG_UPLOADTO_SNADS      --  SNADS address types
  81.  *          CFG_UPLOADTO_OV         --  OfficeVision address types
  82.  *          CFG_UPLOADTO_MCI        --  MCI address types
  83.  *          CFG_UPLOADTO_X400       --  X.400 address types
  84.  *          CFG_UPLOADTO_FAX        --  FAX address types
  85.  *          CFG_UPLOADTO_MHS        --  MHS address types
  86.  *          CFG_UPLOADTO_SMTP       --  SMTP address types
  87.  *          CFG_UPLOADTO_MACMAIL    --  MacMail address types
  88.  *          CFG_UPLOADTO_ALL        --  All of the above address types
  89.  *
  90.  *
  91.  *  PR_CFG_NETBIOS_NTFY
  92.  *      --  A boolean value which indicates whether a netbios notification
  93.  *          is sent to a recipients transport when mail is delivered to
  94.  *          their server inbox.
  95.  *
  96.  *  PR_CFG_SPOOLER_POLL
  97.  *      --  The polling interval in minutes when the transport
  98.  *          checks for new mail.  1 <= polling interval <= 9999
  99.  *
  100.  *  PR_CFG_GAL_ONLY
  101.  *      --  A boolean value which, if TRUE, only displays the Microsoft Mail Global Address
  102.  *          list for name selection.  The Postoffice list, external post office lists, and gateway
  103.  *          address lists are not shown.
  104.  *
  105.  *  F a s t  L A N  P r o p e r t i e s
  106.  *
  107.  *  PR_CFG_LAN_HEADERS
  108.  *      --  A boolean value which indicates whether the user wants to enable
  109.  *          headers while working on the LAN.  Headers mode allows the user
  110.  *          to download message headers and selectively choose which mail
  111.  *          to download.
  112.  *
  113.  *  PR_CFG_LAN_LOCAL_AB
  114.  *      --  A boolean value which indicates whether the user wants to use
  115.  *          name resolution based on a local copy of the server address book
  116.  *          rather than the server address book itself.
  117.  *
  118.  *  PR_CFG_LAN_EXTERNAL_DELIVERY
  119.  *      --  A boolean value which indicates whether EXTERNAL.EXE, a server process, should be used
  120.  *          to deliver submitted mail messages.  This is sometimes useful when mail is running 
  121.  *          on a slow LAN connection.
  122.  *
  123.  *  S l o w  L A N  P r o p e r t i e s
  124.  *
  125.  *  PR_CFG_RAS_HEADERS
  126.  *      --  A boolean value which indicates whether the user wants to enable
  127.  *          headers while working over a slow speed link.  Headers mode
  128.  *          allows the user to download message headers and selectively
  129.  *          choose which mail to download.
  130.  *
  131.  *  PR_CFG_RAS_LOCAL_AB
  132.  *      --  A boolean value which indicates whether the user wants to use
  133.  *          name resolution based on a local copy of the server address book
  134.  *          rather than the server address book itself.
  135.  *
  136.  *  PR_CFG_RAS_EXTERNAL_DELIVERY
  137.  *      --  A boolean value which indicates whether EXTERNAL.EXE, a server process, should be used
  138.  *          to deliver submitted mail messages.  This speeds up message delivery when mail is
  139.  *          running on a Dial-up network connection.
  140.  *
  141.  *  PR_CFG_RAS_INIT_ON_START
  142.  *      --  A boolean value which indicates that a Dial-up Network connection should
  143.  *          be established when the transport provider starts up.
  144.  *
  145.  *  PR_CFG_RAS_TERM_ON_HDRS
  146.  *      --  A boolean value which indicates that a Dial-up Network connection should
  147.  *          be automatically terminated when headers are finished downloading.
  148.  *
  149.  *  PR_CFG_RAS_TERM_ON_XFER
  150.  *      --  A boolean value which indicates that a Dial-up Network connection should
  151.  *          be automatically terminated after mail has finished being sent
  152.  *          received.
  153.  *
  154.  *  PR_CFG_RAS_TERM_ON_EXIT
  155.  *      --  A boolean value which indicates that a Dial-up Network connection should
  156.  *          be automatically terminated when the provider is exited.
  157.  *
  158.  *  PR_CFG_RAS_PROFILE
  159.  *      --  The name of the Dial-up Network profile that the transport will use by
  160.  *          default to attempt the connection.
  161.  *
  162.  *  PR_CFG_RAS_RETRYATTEMPTS
  163.  *      --  Number of times to attempt dial for connection.
  164.  *          1 <= retry attempts <= 9999
  165.  *
  166.  *  PR_CFG_RAS_RETRYDELAY
  167.  *      --  Delay between retry attempts in seconds.
  168.  *          30 <= retry delay <= 9999
  169.  *
  170.  *  PR_CFG_RAS_CONFIRM
  171.  *      --  A value which determines whether, at connection time, the
  172.  *          user should be prompted to select a Dial-up Network connection.
  173.  *          Possible values as defined below include:
  174.  *          CFG_ALWAYS      --  Always use the default Dial-up Network profile.
  175.  *                              Never prompt the user.
  176.  *          CFG_ASK_FIRST   --  Prompt the user to select a profile on the
  177.  *                              first connection or after any error occurs.
  178.  *          CFG_ASK_EVERY   --  Always prompt the user to select the 
  179.  *                              Dial-up Network profile.
  180.  *
  181.  *  S c h e d u l e d   S e s s i o n   P r o p e r t i e s 
  182.  *
  183.  *  PR_CFG_SCHED_SESS
  184.  *      --  A property that contains information on scheduled sessions.  The
  185.  *          maximum number of entries that may be stored is CFG_SS_MAX.  The
  186.  *          information is stored in the data structure SchedSess.
  187.  *
  188.  *          typedef struct SchedSess {
  189.  *              USHORT          sSessType;
  190.  *              USHORT          sDayMask;
  191.  *              FILETIME        ftTime;
  192.  *              FILETIME        ftStart;
  193.  *              ULONG           ulFlags;
  194.  *              TCHAR           szPhoneEntry[RAS_MaxEntryName+1];
  195.  *          } SCHEDSESS, FAR *LPSCHEDSESS;
  196.  *      
  197.  *          SchedSess.sSessType can be one of CFG_SS_ONCE, CFG_SS_WEEKLY, or  CFG_SS_EVERY.
  198.  *         
  199.  *              CFG_SS_ONCE     is a session that is scheduled to execute only once on a specific
  200.  *                              date and time.
  201.  *
  202.  *              CFG_SS_WEEKLY   is a session that is scheduled to execute at a specific time on any
  203.  *                              of a given specified set of days during the week.
  204.  *      
  205.  *              CFG_SS_EVERY    is a session that is scheduled to execute at regularly scheduled 
  206.  *                              intervals of time.
  207.  *
  208.  *          SchedSess.sDayMask is only used when SchedSess.sSessType is set to CFG_SS_WEEKLY.  
  209.  *          SchedSess.sDayMask can be any combination of CFG_SS_SUN, CFG_SS_MON, CFG_SS_TUE, 
  210.  *          CFG_SS_WED, CFG_SS_THU, CFG_SS_FRI, or CFG_SS_SAT.
  211.  *
  212.  *          SchedSess.ftTime varies depending on the SchedSess.sSessType as follows:
  213.  *          
  214.  *                  SchedSess.sSessType             SchedSess.ftTime
  215.  *          
  216.  *                  CFG_SS_ONCE                     Date/time for the single scheduled session
  217.  *                  CFG_SS_WEEKLY                   Time for any weekly scheduled sessions
  218.  *                  CFG_SS_EVERY                    Duration between re-occuring scheduled sessions
  219.  *
  220.  *          SchedSess.ftStart is only used as the initial start time for sessions of type CFG_SS_EVERY.
  221.  *
  222.  *          SchedSess.ulFlags is currently unused and is reserved for future use.
  223.  *
  224.  *          SchedSess.szPhoneEntry is the name of the Dial-up Networking connection to use
  225.  *          when the session is scheduled to execute.  The Dial-up Network connection contains
  226.  *          the phone number and other relevent information needed to perform the connection.
  227.  *
  228.  *          Note:   All FILETIME structure members should always use local time.  ie. GetLocalTime()
  229.  *                  returns a SYSTEMTIME structure which can then be converted to FILETIME via 
  230.  *                  SystemTimetoFileTime().
  231.  */
  232.  
  233. #pragma option -b.
  234. #include <ras.h>
  235. #pragma option -b
  236. #pragma option -b.
  237. #include <mapitags.h>
  238. #pragma option -b
  239.  
  240. #if defined (__BORLANDC__)
  241. #pragma option -b.
  242.   #include <pshpack8.h>
  243. #pragma option -b
  244. #endif
  245.  
  246. /*
  247.  * Connection Properties
  248.  */
  249. #define PR_CFG_SERVER_PATH              PROP_TAG (PT_STRING8,   0x6600)
  250. #define PR_CFG_MAILBOX                  PROP_TAG (PT_STRING8,   0x6601)
  251. // Password must be in the secure property range (See MAPITAGS.H)
  252. #define PR_CFG_PASSWORD                 PROP_TAG (PT_STRING8,   PROP_ID_SECURE_MIN)
  253. #define PR_CFG_CONN_TYPE                PROP_TAG (PT_LONG,      0x6603)
  254. #define     CFG_CONN_LAN            0
  255. #define     CFG_CONN_REMOTE         1
  256. #define     CFG_CONN_OFFLINE        2
  257. #define     CFG_CONN_AUTO           3
  258. #define PR_CFG_SESSION_LOG              PROP_TAG (PT_BOOLEAN,   0x6604)
  259. #define PR_CFG_SESSION_LOG_FILE         PROP_TAG (PT_STRING8,   0x6605)
  260. #define PR_CFG_REMEMBER                 PROP_TAG (PT_BOOLEAN,   0x6606)
  261.  
  262. /*
  263.  * Delivery Properties
  264.  */
  265.  
  266. #define PR_CFG_ENABLE_UPLOAD            PROP_TAG (PT_BOOLEAN,   0x6620)
  267. #define PR_CFG_ENABLE_DOWNLOAD          PROP_TAG (PT_BOOLEAN,   0x6621)
  268. #define PR_CFG_UPLOADTO                 PROP_TAG (PT_LONG,      0x6622)
  269. #define     CFG_UPLOADTO_PCMAIL     0x00000001
  270. #define     CFG_UPLOADTO_PROFS      0x00000002
  271. #define     CFG_UPLOADTO_SNADS      0x00000004
  272. #define     CFG_UPLOADTO_MCI        0x00000008
  273. #define     CFG_UPLOADTO_X400       0x00000010
  274. #define     CFG_UPLOADTO_FAX        0x00000040
  275. #define     CFG_UPLOADTO_MHS        0x00000080
  276. #define     CFG_UPLOADTO_SMTP       0x00000100
  277. #define     CFG_UPLOADTO_OV         0x00000800
  278. #define     CFG_UPLOADTO_MACMAIL    0x00001000
  279. #define     CFG_UPLOADTO_ALL        CFG_UPLOADTO_PCMAIL | CFG_UPLOADTO_PROFS | CFG_UPLOADTO_SNADS | \
  280.                                     CFG_UPLOADTO_MCI | CFG_UPLOADTO_X400 | CFG_UPLOADTO_FAX | \
  281.                                     CFG_UPLOADTO_MHS | CFG_UPLOADTO_SMTP | CFG_UPLOADTO_OV | \
  282.                                     CFG_UPLOADTO_MACMAIL
  283. #define PR_CFG_NETBIOS_NTFY             PROP_TAG (PT_BOOLEAN,   0x6623)
  284. #define PR_CFG_SPOOLER_POLL             PROP_TAG (PT_STRING8,   0x6624)
  285. #define PR_CFG_GAL_ONLY             PROP_TAG (PT_BOOLEAN,       0x6625)
  286.  
  287. /*
  288.  * LAN Properties
  289.  */
  290.  
  291. #define PR_CFG_LAN_HEADERS              PROP_TAG (PT_BOOLEAN,   0x6630)
  292. #define PR_CFG_LAN_LOCAL_AB             PROP_TAG (PT_BOOLEAN,   0x6631)
  293. #define PR_CFG_LAN_EXTERNAL_DELIVERY    PROP_TAG (PT_BOOLEAN,   0x6632)
  294.  
  295. /*
  296.  * Dial-up Network Properties
  297.  */
  298.  
  299. #define PR_CFG_RAS_EXTERNAL_DELIVERY    PROP_TAG (PT_BOOLEAN,   0x6639)
  300. #define PR_CFG_RAS_HEADERS              PROP_TAG (PT_BOOLEAN,   0x6640)
  301. #define PR_CFG_RAS_LOCAL_AB             PROP_TAG (PT_BOOLEAN,   0x6641)
  302. #define PR_CFG_RAS_INIT_ON_START        PROP_TAG (PT_BOOLEAN,   0x6642)
  303. #define PR_CFG_RAS_TERM_ON_HDRS         PROP_TAG (PT_BOOLEAN,   0x6643)
  304. #define PR_CFG_RAS_TERM_ON_XFER         PROP_TAG (PT_BOOLEAN,   0x6644)
  305. #define PR_CFG_RAS_TERM_ON_EXIT         PROP_TAG (PT_BOOLEAN,   0x6645)
  306. #define PR_CFG_RAS_PROFILE              PROP_TAG (PT_STRING8,   0x6646)
  307. #define PR_CFG_RAS_CONFIRM              PROP_TAG (PT_LONG,      0x6647)
  308. #define     CFG_ALWAYS              0
  309. #define     CFG_ASK_FIRST           1
  310. #define     CFG_ASK_EVERY           2
  311. #define PR_CFG_RAS_RETRYATTEMPTS        PROP_TAG (PT_STRING8,   0x6648)
  312. #define PR_CFG_RAS_RETRYDELAY           PROP_TAG (PT_STRING8,   0x6649)
  313.  
  314.  
  315. /*
  316.  * Message Header Property
  317.  */
  318.  
  319. #define PR_CFG_LOCAL_HEADER             PROP_TAG (PT_BOOLEAN,   0x6680)
  320.  
  321. /*
  322.  * Scheduled Session Properties
  323.  */
  324. #define     CFG_SS_MAX          16
  325. #define     CFG_SS_BASE_ID      0x6700
  326. #define     CFG_SS_MAX_ID       CFG_SS_BASE_ID + CFG_SS_MAX - 1
  327. #define SchedPropTag(n)         PROP_TAG (PT_BINARY, CFG_SS_BASE_ID+(n))
  328. #define PR_CFG_SCHED_SESS       SchedPropTag(0)
  329.  
  330. typedef struct SchedSess {
  331.     USHORT          sSessType;
  332.     USHORT          sDayMask;
  333.     FILETIME        ftTime;
  334.     FILETIME        ftStart;
  335.     ULONG           ulFlags;
  336.     TCHAR           szPhoneEntry[RAS_MaxEntryName+1];
  337. } SCHEDSESS, FAR *LPSCHEDSESS;
  338.  
  339. // Day bits
  340. #define     CFG_SS_SUN  0x0001
  341. #define     CFG_SS_MON  0x0002
  342. #define     CFG_SS_TUE  0x0004
  343. #define     CFG_SS_WED  0x0008
  344. #define     CFG_SS_THU  0x0010
  345. #define     CFG_SS_FRI  0x0020
  346. #define     CFG_SS_SAT  0x0040
  347.  
  348. #define IsDayChecked(sDayMask, nDay)  ( (sDayMask) & (1<<(nDay)) )
  349.  
  350. // Session types
  351. #define     CFG_SS_EVERY    0
  352. #define     CFG_SS_WEEKLY   1
  353. #define     CFG_SS_ONCE     2
  354. #define     CFG_SS_NULLTYPE 3
  355.  
  356. // Property range identifiers; useful for asserting
  357. #define PR_CFG_MIN              PROP_TAG (PT_STRING8,   0x6600)
  358. #define PR_CFG_MAX              SchedPropTag(CFG_SS_MAX-1)
  359.  
  360. // Shared Folder Service Provider Properties
  361.  
  362. // PR_ASSIGNED_ACCESS - MAPI Access rights given to users other than the owner of the folder
  363. //                      This property can be retrieved and set. The following MAPI access flags
  364. //                      are valid: 
  365. //                          MAPI_ACCESS_READ
  366. //                          (MAPI_ACCESS_CREATE_HIERARCHY | MAPI_ACCESS_CREATE_CONTENTS)
  367. //                          MAPI_ACCESS_DELETE
  368. //  
  369. #define PR_ASSIGNED_ACCESS  PROP_TAG(PT_LONG, 0x66ff)
  370.  
  371. // PR_OWNER_NAME      - Owner's name of the shared folder.
  372. //                      This property can be retrieved and cannot be set.
  373. //  
  374. #define PR_OWNER_NAME       PROP_TAG(PT_STRING8, 0x66fe)
  375.  
  376. // SFSP_ACCESS_OWNER -  This flag is returned when PR_ASSIGNED_ACCESS is retrieved by the owner
  377. //                      of the folder. It can not be set.
  378. #define SFSP_ACCESS_OWNER   0x8000
  379.  
  380.  
  381. // Unique Provider Identifiers
  382. //
  383. #define MSFS_UID_ABPROVIDER     { 0x00,0x60,0x94,0x64,0x60,0x41,0xb8,0x01, \
  384.                                   0x08,0x00,0x2b,0x2b,0x8a,0x29,0x00,0x00 }
  385.  
  386. #define MSFS_UID_SFPROVIDER     { 0x00,0xff,0xb8,0x64,0x60,0x41,0xb8,0x01, \
  387.                                   0x08,0x00,0x2b,0x2b,0x8a,0x29,0x00,0x00 }
  388. #if defined (__BORLANDC__)
  389. #pragma option -b.
  390.   #include <poppack.h>
  391. #pragma option -b
  392. #endif
  393.  
  394. #pragma option -b.
  395. #endif // _MSFS_H
  396.  
  397.